# 此处我是为了方便git管理, 就没把包放在sit-packages里边, 所以需要手动加上地址
# 如果是放到python的lib/sit-packages下了, 就不用这样了
import sys
sys.path.append(r'C:\Tool\lovely_cat\gitee\wxmbot')

from wxmbot import CreateBot, run_with_reloader
from wxmbot.app import bot
from wxmbot.config import config


def load_configs():
    config.load_config('config.env') # 请手动加载需要的配置
    config.load_config('config.bot') # 请手动加载需要的配置

def init_db():
    bot.db = 'db' # 这里可以是处定义的数据库对象, 比如sqlalchemy不支持的

    # sqlalchemy 用例  最好单独放个模块
    # 不会用？听下flask中sqlalchemy怎么用的吧
    # 以下建议单独放在一个model里边，这里只是演示
    from wxmbot.sqlalchemy import SQLAlchemy
    from sqlalchemy import Column, Integer, String
    db = SQLAlchemy()

    class User(db.Model):
        id = Column(Integer, autoincrement=True, primary_key=True)
        name = Column(String)
        age = Column(Integer, default=18)

    # 以下一般就放在此处进行注册
    db.init_app(app=bot)
    db.create_all(app=bot)

    # 以下一般是放在具体业务里使用，这里只是演示
    user = User()
    user.name = 'zhangsan'
    db.session.add(user)
    db.session.commit()

def main():
    load_configs()
    bot.root_path = '.' # 默认也是这个
    # init_db()

    # 默认情况下, 插件目录(相对当前文件目录)是plugins
    # 此例使用的就是, bot.py和plugins在同一目录
    # 项目结构不固定, 根据个人爱好选择, 其他结构可查看文档说明
    # 总之, 这些都是可以自己设置的, 只要有 config 文件 和 plugins 文件夹就行
    # 名字叫啥都不重要, 自己引用的时候是哪个就是哪个
    # enable_invoke 默认为 False, 开启这个是开启外界(不是指微信猫的dll)对该插件的访问权
    # 可结合 【黑cyc宇】 开发的　《可爱猫wxm_invoke.exe》 进行使用
    # 此为简单介绍, 详情请查看文档
    # app只是为了start的, 实际使用中, 主要还是使用 wxmbot.app 下的bot
    # 所以我们也可以直接 CreateBot(plugin_dirs=['plugins'], enable_invoke=True).start()
    app = CreateBot(plugin_dirs=['plugins'], enable_invoke=True)
    app.start()


if __name__ == '__main__':
    # 可以直接 main(), 但是这样的话, 修改代码之后不会自动重启
    run_with_reloader(main)

